﻿###########################################
#
#  H8 Sk8 1988
#
#  Outskate the Hate
#  for the Super Chip8.
#  Powered by the revolutionary XO-CHIP
#
#  
#  
#  A game by Willfor.
#  Best run at 20 cycles/frame
#
###########################################



:alias state        v6
:alias score        v7
:alias collide      v8
:alias playerx      v9
:alias free         va
:alias speed        vb
:alias forward      vc
:alias progress     vd

:const playery 32



: wait
        vf := 3
        loop
                vf := delay
                if vf != 0 then
        again
        vf := 2
        delay := vf
;
: display-player
        # let's first unsprite this thing
        ve := 0
        # NORMAL
        if state == 0 begin
                vf := 0
                i := sk8er-a
                free := playery
                sprite ve free 15
                collide := vf
                if collide != 0 begin 
                        if speed > 46 then speed := 46
                        destroy-player
                        welcome-to-trash
                        state := 16
                        v0 := 0
                        jump0 play-sfx
                end
        end
        # SLOWING DOWN
        if state == 1 begin
                vf := 0
                i := sk8er-b
                free := playery
                sprite ve free 15
                collide := vf
                if collide != 0 begin 
                        if speed > 46 then speed := 46
                        destroy-player
                        welcome-to-trash
                        state := 16
                        v0 := 0
                        jump0 play-sfx
                end
        end
        # JUMPING
        if state == 2 begin
                        #v3 := v0 # v3 will hold the current speed
                        #v4 := 0  # v4 will hold the current position on the track
                if v3 == 2 begin
                    i := sk8er-jump-2
                end
                if v3 == 1 begin
                    i := sk8er-jump-1
                end
                if v3 == 0 begin
                    i := sk8er-jump-nil
                end
                i += v4
                load v0
                if v0 != 0xFF begin
                    v5 := playery
                    v5 -= v0
                else
                    state := 0
                end
                
                v4 += 1
                vf := 0
                i := sk8er-b
                sprite ve v5 15
                collide := vf
                if collide != 0 begin 
                        if speed > 46 then speed := 46
                        destroy-player
                        welcome-to-trash
                        state := 16
                        v0 := 0
                        jump0 play-sfx
                end
        end
        if state == 8 begin
            i := sk8er-b
            free := playery
            sprite ve free 15
            #v0 := 0
            #jump0 play-sfx
        end
        if state == 16 begin
                if speed > 5 begin
                    v8 := 0
                    v5 := 8
                    ve := 0
                    i := sk8er-die
                    free := playery
                    sprite ve free 0
                end
                if speed < 3 begin
                    static-screen-music-player-1
                end
        end
;
: destroy-player
        #if collide != 0 then welcome-to-trash
        if state == 0 begin
                ve := 0
                i := sk8er-a
                free := playery
                sprite ve free 15
        end
        if state == 16 begin
                if speed > 5 begin
                    ve := 0
                    i := sk8er-die
                    free := playery
                    sprite ve free 0
                end
        end
;
: welcome-to-trash
        i := trashed-a
        v0 := 80
        v1 := 18
        sprite v0 v1 0
        i := trashed-b
        v0 := 96
        sprite v0 v1 0
        i := trashed-c
        v0 := 112
        sprite v0 v1 0
;
: control-player
        
        
        # qwerty 4 == 12
        # qwerty r == 13
        
        if state == 0 begin
                v3 := 7 # a(7)
                v4 := 5 # w(5)
                if v3 key begin
                        state := 1 # slow down
                end
                if v4 key begin
                        state := 2 # jump
                        i := sk8er-speed
                        i += speed
                        load v0
                        v3 := v0 # v3 will hold the current speed
                        v4 := 0  # v4 will hold the current position on the track
                        
                        
                end
        end
        if state == 1 begin
                v3 := 7 # a(7)
                v4 := 5 # w(5)
                if v3 key begin
                        v3 := 5
                else
                        state := 0
                end
        end
;
: move-player
        # now let's move forward
        i := sk8er-speed
        i += speed
        load v0 # because I am dumb and won't know what this means in the future despite it being very clear in the manual, and I'm probably going to want to do this again, this is going to load i into v0. God, this is simple, please remember it.
        playerx += v0
        forward += v0
        if forward > 50 begin
                forward := 0
                progression
        end
;
: speed-player
        # can we go even faster???
        #v8 := key
        
        if state == 0 begin
                #if v8 == 7 then hit-the-brakes := 1
                if speed < 56 then speed += 1
        end
        if state == 1 begin # hitting the brakes
                if speed > 2 then speed += -1
        end
        if state == 16 begin
            if speed > 2 then speed += -2
        end
;
: scroll-field
        # possible shift
        if playerx > 8 begin
                if state != 0 then destroy-player
                playerx := 7
                scroll-left
                scroll-left
                display-player
                v1 := 0x78
                v2 := 0
                v0 := random 0b1110
                i := sidewalk-b
                if v0 == 2 then i := sidewalk-c
                if v0 == 4 then i := sidewalk-d
                sprite v1 v2 15
                
        end
;
: progression
    i := level-events
    i += progress
    load v0
    if v0 == 0x01 begin # chance of dumpster
        va := random 0b1110
        if va < 8 begin
            i := dumpster
            v0 := 108
            v1 := 42
            sprite v0 v1 0
        end
    end
    if v0 == 0x02 begin # chance of catte/birde
        va := random 0b1110
        if va < 8 begin
            i := catte
            v0 := 108
            v1 := 42
            sprite v0 v1 15
            i := birde
            v0 := 112
            v1 := 16
            sprite v0 v1 15
        end
    end
    if v0 == 0x06 begin # goal line mode
        state := 8
        v2 := 0
        v1 := 15
        v0 := 108
        loop
            i := goalline
            sprite v0 v1 15
            v1 += 14
            v2 += 1
            if v2 < 3 then
        again
        #i := press-e
        #v1 := 15
        #v0 := 92
        #sprite v0 v1 0
        
    end
    if v0 == 0x07 begin # return to standard mode
        state := 0
    end
    
    if v0 == 0x20 begin
        state := 50
        return
    end
    
    progress += 1
;
: main
        # let's pump the games
        loop
                intro-screen
                intro-screen-2
                main-sk8-init
                main-sk8
                main-music
        again   
: main-sk8-init
        hires
        clear
        state := 0
        progress := 0
        playerx := 1
        i := sk8er-a
        plane 3
        ve := 0
        free := playery
        sprite ve free 15
        collide := 0
        
        i := dumpster
        v0 := 100
        v1 := 42
        sprite v0 v1 0
        
        # let's make the sidewalk initially now
        v0 := 0
        v1 := 0
        loop
                i := sidewalk-a
                sprite v0 v1 0
                v0 += 16
                if v0 < 128 then
        again
;      
: main-sk8
        # okay, let's get to the meat of the equasion. well, it's not an equasion per se, though in certain senses it may share some properties
        loop
                control-player
                move-player
                scroll-field
                speed-player
                if state == 16 begin 
                        display-player
                        v4 := 4
                        if v4 key begin
                                state := 50
                        else
                                v4 := 0
                        end
                end
                if state != 50 then
        again
        if v4 == 4 then state := 51 # reboot
;      
: main-music
        clear
        lores
        plane 3
        v4 := 0
        v1 := 0
        v2 := 0
        loop
                v2 := 0
                i := intro-piece
                sprite v1 v2 15
                
                v2 := 24
                i := intro-piece
                sprite v1 v2 15
                v1 += 8
                if v1 < 62 then
        again
        v5 := 12 # set music
        v8 := 0 # set progress
        if state != 51 begin
                i := yeeaaaaaahhhhh
                v0 := 20
                v1 := 9
                sprite v0 v1 0
                loop
                        static-screen-music-player-1
                        v4 := 4
                        if v4 -key then
                again
        end
;
: intro-screen
        clear
        plane 3
        v4 := 0
        v1 := 0
        v2 := 0
        loop
                v2 := 0
                i := intro-piece
                sprite v1 v2 15
                
                v2 := 24
                i := intro-piece
                sprite v1 v2 15
                v1 += 8
                if v1 < 62 then
        again
        v1 := 2
        v2 := 8
        i := intro-1
        sprite v1 v2 0
        v1 += 16
        i := intro-2
        sprite v1 v2 0
        v1 += 16
        i := intro-3
        sprite v1 v2 0
        v1 += 16
        i := intro-4
        sprite v1 v2 0
        v5 := 0 # set music
        v8 := 0 # set progress
        loop
                v4 += 1
                if v4 > 120 begin
                        plane 2
                        v4 := 0
                        v1 := 2
                        v2 := 8
                        i := intro-1
                        sprite v1 v2 0
                        v1 += 16
                        i := intro-2
                        sprite v1 v2 0
                        v1 += 16
                        i := intro-3
                        sprite v1 v2 0
                        v1 += 16
                        i := intro-4
                        sprite v1 v2 0
                        
                end
                va := 8
                static-screen-music-player-1
                if va -key then
        again
;
: intro-screen-2
        plane 3
        clear
        v4 := 0
        v1 := 0
        v2 := 0
        loop
                v2 := 0
                i := intro-piece
                sprite v1 v2 15
                v2 := 26
                i := intro-piece
                sprite v1 v2 15
                v1 += 8
                if v1 < 62 then
        again
        v4 := 0
        v1 := 16
        v2 := 9
        i := intro-instructions-1
        sprite v1 v2 0
        v1 += 16
        i := intro-instructions-2
        sprite v1 v2 0
        loop
                static-screen-music-player-1
                va := 8
                if va -key then
        again
        v4 := 0
        v1 := 0
        v2 := 0
        va := 0
;
: static-screen-music-player-1
        # v5, v8, and v9 reserved (song, progress)
        
        # grab song
        v0 := v5
        jump0 song-table-static
;
: static-screen-music-player-2
        # we have the song now; progress it
        i += v8
        load v0
        if v0 != 0xFF begin
                jump0 grab-static-note
        else
            v8 := 0
        end
;
: sustain-note
	audio
    vf := 6
	delay  := vf
	vf     := 60
	buzzer := vf
	loop
		vf := delay
		if vf != 0 then
	again
    v8 += 1
;
: quick-sfx
    audio
    vf := 6
	delay  := vf
	vf     := 12
	buzzer := vf
;
: grab-static-note
    i := --- jump sustain-note # 0x00
    i := C-3 jump sustain-note # 0x04
    i := C$3 jump sustain-note # 0x08
    i := D-3 jump sustain-note # 0x0C
    i := D$3 jump sustain-note # 0x10
    i := E-3 jump sustain-note # 0x14
    i := F-3 jump sustain-note # 0x18
    i := F$3 jump sustain-note # 0x1C
    i := G-3 jump sustain-note # 0x20
    i := G$3 jump sustain-note # 0x24
    i := A-3 jump sustain-note # 0x28
    i := A$3 jump sustain-note # 0x2C
    i := B-3 jump sustain-note # 0x30
    i := C-4 jump sustain-note # 0x34
    i := C$4 jump sustain-note # 0x38
    i := D-4 jump sustain-note # 0x3C
    i := D$4 jump sustain-note # 0x40
    i := E-4 jump sustain-note # 0x44
    i := F-4 jump sustain-note # 0x48
    i := F$4 jump sustain-note # 0x4C
    i := G-4 jump sustain-note # 0x50
    i := G$4 jump sustain-note # 0x54
    i := A-4 jump sustain-note # 0x58
    i := A$4 jump sustain-note # 0x5C
    i := B-4 jump sustain-note # 0x60
    i := C-5 jump sustain-note # 0x64
    i := C$5 jump sustain-note # 0x68
    i := D-5 jump sustain-note # 0x6C
    i := D$5 jump sustain-note # 0x70
    i := E-5 jump sustain-note # 0x74
    i := F-5 jump sustain-note # 0x78
    i := F$5 jump sustain-note # 0x7C
    i := G-5 jump sustain-note # 0x80
    i := G$5 jump sustain-note # 0x84
    i := A-5 jump sustain-note # 0x88
    i := A$5 jump sustain-note # 0x8C
    i := B-5 jump sustain-note # 0x90
;
: play-sfx
    i := sfx-crash jump quick-sfx # 0x00
    i := sfx-vuvu jump quick-sfx  # 0x04 (vuvuzela)
;
: song-table-static
    i := song-title-theme # 0
    jump static-screen-music-player-2
    i := song-punk-theme-1 # 4
    jump static-screen-music-player-2
    i := song-get-trashed  # 8
    jump static-screen-music-player-2
    i := song-all-rainbows  # 12
    jump static-screen-music-player-2  
;

: sk8er-a
    0x5D 0x3E 0x10 0x00 0x00 0x1C 0x1C 0x3C 0x7E 0x00 0x00 0x00 0x81 0x7E 0x42 
    0x5D 0x32 0x1C 0x49 0x3E 0x14 0x14 0x04 0x5E 0x14 0x24 0x24 0x36 0x00 0x42 

: sk8er-b
    0xBA 0x7C 0x20 0x00 0x00 0x38 0x78 0x78 0xFC 0x00 0x03 0x0C 0x32 0x08 0x00 
    0xBA 0x64 0x38 0x92 0x7C 0x28 0x68 0x48 0xDC 0x28 0x24 0x10 0x02 0x08 0x00
    
: sk8er-die
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x60 0x01 0xC0 0x03 0xC0 0x03 
    0xE0 0x07 0xE2 0x04 0xCC 0x00 0x0C 0x00 0x3C 0x00 0x38 0x00 0x40 0x00 0x00 
    0x00 0x00 0x04 0x00 0x04 0x00 0x02 0x00 0x02 0x00 0x61 0x62 0x19 0xC4 0x07 
    0xC8 0x03 0xF0 0x07 0xE2 0x04 0xEC 0x00 0x9C 0x01 0x3C 0x02 0x38 0x04 0x40 
    0x00 0x00 0x00 0x00 
    
: sk8er-speed
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 
    0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x02 0x02 0x02 
    0x02 0x02 0x02 0x02 0x02 0x02 0x02 0x02 0x02 0x02 0x02 0x02 
    
: sk8er-jump-nil
    0xFF
    
: sk8er-jump-1
    0x01 0x02 0x03 0x03 0x04 0x04 0x04 0x04 0x04 0x04 0x04 0x04 0x04 0x04 0x03 
    0x03 0x02 0x02 0x01 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 

: sk8er-jump-2
    0x01 0x02 0x03 0x03 0x04 0x04 0x05 0x05 0x06 0x06 0x06 0x06 0x06 0x06 0x06 
    0x05 0x05 0x04 0x04 0x03 0x02 0x01 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0xFF     

: dumpster
    0x3F 0xFC 0x7F 0xFE 0x40 0x00 0x7F 0xFE 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 
    0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x7F 0xFE 
    0x3F 0xFC 0x00 0x00 0x00 0x00 0x3F 0xFE 0x00 0x00 0x00 0x00 0x13 0x72 0x2A 
    0x25 0x13 0x22 0x00 0x00 0xCA 0xAC 0xAA 0xEC 0xCE 0xA8 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 
    
: catte
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xC2 0xC4 0x38 0x28 0x00 
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x42 0x80 0x00 0x40 0x00 0x28 
    
: birde
    0x00 0x00 0x00 0x00 0x00 0x00 0x40 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x06 0x0C 0x18 0x3C 0xFC 0x18 0x0C 0x06 0x00 0x00 0x00 0x00 
    
    
: sidewalk-a
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0xFF 0xFF 0x00 0x00 0xAA 0xAA 0x55 0x55 0xAA 0xAA 0x55 0x55 0xAA 0xAA 
    0x00 0x00 0xAA 0xAA 0x55 0x55 0xAA 0xAA 0x55 0x55 0xAA 0xAA 0x55 0x55 0xAA 
    0xAA 0x55 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 
    
: sidewalk-b
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0x00 0xAA 0x55 0xAA 0x55 0xAA 
    0xAA 0x55 0xAA 0x55 0xAA 0x55 0xAA 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 

: sidewalk-c
    0x22 0x3C 0x28 0x34 0x22 0x20 0x20 0x20 0xFF 0x20 0xAA 0x75 0xAA 0x55 0xAA 
    0xAA 0x55 0x8A 0x55 0xAA 0x55 0x8A 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00

: sidewalk-d
    0x00 0x00 0x30 0x48 0x4A 0x02 0x3A 0x7C 0xC7 0x38 0xFE 0x55 0x82 0x55 0xAA 
    0xAA 0x55 0x8A 0x05 0xB2 0x57 0xBA 0x7D 0xB8 0x38 0x7C 0x28 0x28 0x28 0x00 
    
: goalline
    0xAA 0x54 0xAA 0x54 0xAA 0x54 0xAA 0x54 0xAA 0x54 0xAA 0x54 0xAA 0x54 0x00 
    0x28 0x10 0x28 0x10 0x28 0x10 0x28 0x10 0x28 0x10 0x28 0x10 0x28 0x10 0x00 
: press-e
    0x70 0x00 0x50 0x00 0x7E 0x00 0x4A 0x00 0x0D 0xC0 0x0B 0x80 0x01 0x00 0x01 
    0xF8 0x00 0x20 0x00 0x18 0x41 0x3F 0x41 0x04 0x1C 0x03 0x18 0x07 0x10 0x00 
    0x1C 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 

    
    
: trashed-a
    0x15 0xD4 0x15 0x54 0x15 0x54 0x09 0x54 0x09 0x54 0x09 0xDC 0x00 0x00 0xF8 
    0x00 0x40 0x00 0x58 0x8A 0x55 0x52 0x55 0x53 0x59 0xCA 0xD5 0x4A 0xD5 0x52 
    0x7F 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00 
    0xC0 0x00 0x7F 0xFF 

: trashed-b
    0x19 0x38 0x22 0x90 0x22 0x90 0x22 0x90 0x2A 0x90 0x19 0x10 0x00 0x00 0x00 
    0x00 0x00 0x00 0x5D 0x81 0x51 0x42 0xDD 0x42 0x51 0x42 0x51 0x42 0x5D 0x81 
    0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0xFF 0xFF 

: trashed-c
    0x0F 0xF8 0x10 0x04 0x2E 0xBA 0x2A 0xAA 0x2C 0xBA 0x2A 0xA2 0x20 0x02 0x3F 
    0xFE 0x00 0x00 0xB3 0x20 0x2A 0xA0 0x2A 0xA0 0x33 0x21 0xAA 0xA2 0xAA 0xBA 
    0xFF 0xFC 0x0F 0xF8 0x10 0x04 0x20 0x02 0x20 0x02 0x20 0x02 0x20 0x02 0x20 
    0x02 0x3F 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x02 
    0x00 0x02 0xFF 0xFC 

: yeeaaaaaahhhhh
    0xAE 0x65 0xA8 0x95 0xAE 0xF7 0x48 0x95 0x48 0x95 0x4E 0x95 0x00 0x00 0x00 
    0x00 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x00 0x00 0x55 0x55 
    0x00 0x00 0x0E 0x05 0x08 0x05 0x0E 0x07 0x08 0x05 0x08 0x05 0x0E 0x05 0x00 
    0x00 0x00 0x00 0x44 0x44 0x44 0x44 0x44 0x44 0x44 0x44 0x44 0x44 0x00 0x00 
    0x44 0x44 0x00 0x00 



: level-events
    0x00 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x01 0x02 0x01 0x01 0x06 0x07
    0x00 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x01 0x02 0x01 0x01 0x06 0x07
    0x00 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x01 0x02 0x01 0x01 0x06 0x20
    
    
: intro-piece
    0xCD 0x77 0x9C 0x6E 0x9D 0xB6 0x2A 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0xC0 0x34 0x08 0x64 0x94 0x12 0x22 0x45 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    
: intro-1
    0x00 0x00 0x1C 0x88 0x20 0x91 0x20 0x91 0x20 0xE1 0x3C 0xF1 0x1C 0x91 0x04 
    0x91 0x04 0x91 0x38 0x88 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 0x00 0x40 0x1C 0x48 0x00 0x48 0x00 0x10 0x20 0x61 0x18 
    0x40 0x00 0x40 0x38 0x40 0x00 0x50 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 

: intro-2
    0x00 0x00 0xC2 0x46 0x22 0x49 0x22 0x49 0x22 0x49 0xE3 0xCF 0x23 0xC9 0x22 
    0x49 0x22 0x49 0xC2 0x46 0x00 0x00 0x00 0x00 0x3B 0xBB 0x2A 0xB2 0x3B 0x21 
    0x22 0xBB 0x00 0x00 0x01 0x00 0xC1 0x06 0x01 0x00 0x01 0x00 0x20 0x09 0xC1 
    0x86 0x01 0x00 0x01 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 

: intro-3
    0x00 0x00 0x08 0x30 0x18 0x49 0x18 0x49 0x08 0x49 0x08 0x79 0x08 0x09 0x08 
    0x09 0x08 0x11 0x1E 0x60 0x00 0x00 0x00 0x00 0xB9 0x39 0x20 0xA2 0x98 0x18 
    0xB8 0x38 0x00 0x00 0x04 0x00 0x04 0x30 0x14 0x00 0x04 0x00 0x04 0x41 0x04 
    0x30 0x04 0x00 0x04 0x08 0x00 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 

: intro-4
    0x00 0x00 0xC3 0x00 0x24 0x80 0x24 0x80 0x24 0x80 0xE7 0x80 0x24 0x80 0x24 
    0x80 0x24 0x80 0xC3 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 0x00 0x00 0xC3 0x00 0x00 0x00 0x00 0x00 0x24 0x80 0xC3 
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 
    
: intro-instructions-1
    0x88 0x15 0xAB 0x15 0xA8 0x55 0x53 0x22 0x00 0x00 0x00 0x00 0x20 0x74 0x53 
    0x44 0x70 0x34 0x53 0x77 0x00 0x00 0x00 0x00 0x70 0x67 0x53 0x56 0x70 0x64 
    0x1B 0x57 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 


: intro-instructions-2
    0x29 0xC0 0x55 0x40 0x45 0xC0 0x45 0x00 0x00 0x00 0x00 0x00 0x24 0x40 0x54
    0x40 0x55 0x40 0x22 0x80 0x00 0x00 0x00 0x00 0x42 0x27 0x65 0x52 0x55 0x52
    0x62 0x22 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 
    0x00 0x00 0x00 0x00 


    

: song-title-theme
    0x28 0x00 0x48 0x44 0x00 0x50 0x58 0x00 0x3C 0x44 # A
    0x00 0x00 0x28 0x00 0x44 0x00 0x58 0x00 0x44 0x00
    0x34 0x00 0x44 0x00 0x28 0x00 
    0x28 0x00 0x48 0x44 0x00 0x50 0x58 0x00 0x3C 0x44 # A
    0x00 0x00 0x28 0x00 0x44 0x00 0x58 0x00 0x44 0x00
    0x34 0x00 0x44 0x00 0x28 0x00 
    0x0C 0x28 0x0C 0x28 0x14 0x28 0x14 0x28 0x34 0x28 # B
    0x34 0x28 0x0C 0x00 0x00 0x28 0x00 0x44 0x00 0x58 
    0x00 0x44 0x00 0x34 0x00 0x44 0x00 0x28 0x00
    0x0C 0x28 0x0C 0x28 0x14 0x28 0x14 0x28 0x34 0x28 # B
    0x34 0x28 0x0C 0x00 0x00 0x28 0x00 0x44 0x00 0x58 
    0x00 0x44 0x00 0x34 0x00 0x44 0x00 0x28 0x00
    
    0xFF
    
: song-punk-theme-1
    0x3C 0x3C 0x28 0x28 0x44 0x44 0x00 0x3C 0x00 0x34
    0x3C 0x3C 0x28 0x28 0x44 0x44 0x00 0x3C 0x00 0x34
    0x30 0x30 0x28 0x28 0x44 0x44 0x00 0x3C 0x00 0x34
    0x30 0x30 0x28 0x28 0x44 0x44 0x00 0x3C 0x00 0x34
    0x30 0x30 0x00 0x44 0x28 0x00 0x44 0x34 0x00 0x30

    0xFF
    
    
: song-get-trashed
    0x3C 0x00 0x20 0x00 0x0C 0x00 0x00 0x00 0x00 0x44
    0x3C 0x00 0x20 0x00 0x14 0x00 0x00 0x00 0x00 0x44
    0x3C 0x00 0x20 0x00 0x0C 0x00 0x00 0x00 0x00 0x44
    0x3C 0x00 0x20 0x00 0x14 0x00 0x00 0x00 0x00 0x4C
    0x3C 0x00 0x20 0x00 0x0C 0x00 0x00 0x00 0x00 0x4C
    0x3C 0x00 0x20 0x00 0x14 0x00 0x00 0x00 0x00 0x50
    
    0x20 0x00 0x3C 0x44 0x20 0x00 0x14 0x00 0x20 0x00 
    0x20 0x00 0x3C 0x44 0x50 0x00 0x6C 0x00 0x80 0x00 
    0x20 0x00 0x3C 0x44 0x50 0x80 0x6C 0x64 0x50 0x00 
    
    0xFF
    
: song-all-rainbows
    0x58 0x00 0x58 0x00 0x58 0x00 0x58 0x00 0x64 0x00 
    0x64 0x00 0x64 0x00 0x64 0x00 0x50 0x00 0x50 0x00 
    0x50 0x00 0x50 0x00 0x50 0x00 0x48 0x00 0x00 0x00
    
    0x58 0x00 0x58 0x00 0x58 0x00 0x58 0x00 0x64 0x00 
    0x64 0x00 0x64 0x00 0x64 0x00 0x50 0x00 0x50 0x00 
    0x50 0x00 0x50 0x00 0x50 0x00 0x48 0x00 0x00 0x00
    
    0x74 0x00 0x6C 0x00 0x64 0x00 0x58 0x00 0x00 0x6C
    0x6C 0x00 0x6C 0x00 0x64 0x00 0x58 0x00 0x00 0x74
    0x74 0x00 0x6C 0x00 0x64 0x00 0x58 0x00 0x00 0x6C
    0x6C 0x00 0x6C 0x00 0x64 0x00 0x58 0x00 0x00 0x78
    0x64 0x00 0x64 0x00 0x58 0x00 0x74 0x64 0x50 0x58 
    0x74 0x00 0x6C 0x00 0x64 0x00 0x58 0x00 0x00 0x00
    
    0xFF

    

# HOW ABOUT SOME NOTATION DATA???
    
# 5 range
: B-5 0xE6 0x66 0x66 0x66 0x66 0x66 0x66 0x66 0x66 0x63 0x33 0x33 0x33 0x33 0x33 0x33 # 987hz
: A$5 0xE6 0x67 0x33 0x31 0x99 0x9C 0xCC 0xC6 0x66 0x73 0x33 0x19 0x98 0xCC 0xCE 0x66 # 932hz
: A-5 0xE6 0x33 0x19 0xCC 0xE6 0x73 0x19 0x8C 0xC6 0x73 0x39 0x9C 0xC6 0x63 0x31 0x98 # 880hz
: G$5 0xE7 0x39 0x8C 0x67 0x39 0x8C 0x63 0x39 0xCC 0x63 0x39 0xCC 0x63 0x19 0xCE 0x63 # 830hz
: G-5 0xE3 0x18 0xC6 0x39 0xCE 0x73 0x8C 0x63 0x18 0xE7 0x39 0xCE 0x31 0x8C 0x63 0x9C # 783hz
: F$5 0xE3 0x9C 0x63 0x8C 0x73 0x8E 0x71 0x8E 0x71 0xCE 0x31 0xC6 0x39 0xC6 0x38 0xC7 # 739hz
: F-5 0xE3 0x8E 0x39 0xC7 0x1C 0x63 0x8E 0x38 0xC7 0x1C 0x73 0x8E 0x38 0xE7 0x1C 0x71 # 698hz
: E-5 0xF1 0xC7 0x1C 0x71 0xC7 0x1C 0x71 0xC7 0x1C 0x71 0xC7 0x8E 0x38 0xE3 0x8E 0x38 # 659hz
: D$5 0xF1 0xC7 0x8E 0x38 0x71 0xC3 0x8E 0x3C 0x71 0xC3 0x8E 0x1C 0x71 0xE3 0x8E 0x1C # 622hz
: D-5 0xF1 0xE3 0xC7 0x0E 0x1C 0x78 0xF1 0xC3 0x87 0x1E 0x3C 0x70 0xE1 0xC3 0x8F 0x1E # 587hz
: C$5 0xF0 0xE1 0xE3 0xC7 0x87 0x0E 0x1E 0x3C 0x78 0x70 0xF1 0xE3 0xC3 0x87 0x0F 0x1E # 554hz
: C-5 0xF0 0xF0 0xF1 0xE1 0xE1 0xE3 0xC3 0xC3 0xC7 0x87 0x87 0x0F 0x0F 0x0E 0x1E 0x1E # 523hz
# 4 range
: B-4 0xF8 0x78 0x78 0x78 0x78 0x78 0x78 0x78 0x78 0x78 0x7C 0x3C 0x3C 0x3C 0x3C 0x3C # 494hz
: A$4 0xF8 0x78 0x3C 0x3E 0x1E 0x1F 0x0F 0x07 0x87 0x83 0xC3 0xE1 0xE0 0xF0 0xF0 0x78 # 466hz
: A-4 0xF8 0x3C 0x1E 0x0F 0x07 0x83 0xE1 0xF0 0xF8 0x7C 0x3E 0x1F 0x07 0x83 0xC1 0xE0 # 440hz
: G$4 0xF8 0x3E 0x0F 0x87 0xC1 0xF0 0x7C 0x3E 0x0F 0x83 0xC1 0xF0 0x7C 0x1E 0x0F 0x83 # 415hz
: G-4 0xFC 0x1F 0x07 0xC1 0xF0 0x7C 0x0F 0x83 0xE0 0xF8 0x3E 0x0F 0x81 0xF0 0x7C 0x1F # 392hz
: F$4 0xFC 0x1F 0x83 0xF0 0x7C 0x0F 0x81 0xF0 0x3E 0x0F 0xC1 0xF8 0x3E 0x07 0xC0 0xF8 # 369hz
: F-4 0xFC 0x0F 0xC1 0xF8 0x1F 0x83 0xF0 0x3F 0x07 0xE0 0x7C 0x0F 0xC0 0xF8 0x1F 0x81 # 349hz
: E-4 0xFE 0x07 0xE0 0x7E 0x07 0xE0 0x7E 0x07 0xE0 0x7F 0x03 0xF0 0x3F 0x03 0xF0 0x3F # 329hz
: D$4 0xFE 0x07 0xF0 0x3F 0x81 0xFC 0x0F 0xC0 0x7E 0x03 0xF0 0x1F 0x81 0xFC 0x0F 0xE0 # 311hz
: D-4 0xFE 0x03 0xF8 0x0F 0xE0 0x7F 0x01 0xFC 0x07 0xF0 0x3F 0x80 0xFE 0x03 0xF8 0x1F # 293hz
: C$4 0xFF 0x01 0xFC 0x07 0xF8 0x0F 0xE0 0x3F 0x80 0x7F 0x01 0xFC 0x03 0xF8 0x0F 0xE0 # 277hz
: C-4 0xFF 0x00 0xFE 0x01 0xFE 0x03 0xFC 0x03 0xF8 0x07 0xF0 0x0F 0xF0 0x1F 0xE0 0x1F # 262hz
# 3 range
: B-3 0xFF 0x80 0x7F 0x80 0x7F 0x80 0x7F 0x80 0x3F 0xC0 0x3F 0xC0 0x3F 0xC0 0x3F 0xC0 # 246hz
: A$3 0xFF 0x80 0x3F 0xC0 0x1F 0xE0 0x0F 0xF8 0x07 0xFC 0x03 0xFE 0x00 0xFF 0x00 0x7F # 233hz
: A-3 0xFF 0xC0 0x1F 0xF0 0x07 0xFC 0x01 0xFF 0x00 0x7F 0xC0 0x1F 0xF8 0x03 0xFE 0x00 # 220hz
: G$3 0xFF 0xC0 0x0F 0xF8 0x01 0xFF 0x80 0x3F 0xF0 0x03 0xFE 0x00 0x7F 0xE0 0x0F 0xFC # 207hz
: G-3 0xFF 0xE0 0x07 0xFE 0x00 0x7F 0xF0 0x03 0xFF 0x00 0x3F 0xF0 0x01 0xFF 0x80 0x1F # 196hz
: F$3 0xFF 0xE0 0x03 0xFF 0x80 0x0F 0xFE 0x00 0x7F 0xF0 0x01 0xFF 0xC0 0x07 0xFE 0x00 # 185hz
: F-3 0xFF 0xF0 0x01 0xFF 0xE0 0x03 0xFF 0xC0 0x07 0xFF 0x80 0x0F 0xFF 0x00 0x1F 0xFE # 174hz
: E-3 0xFF 0xF8 0x00 0x7F 0xF8 0x00 0x7F 0xF8 0x00 0x3F 0xFC 0x00 0x3F 0xFC 0x00 0x3F # 164hz
: D$3 0xFF 0xF8 0x00 0x3F 0xFE 0x00 0x0F 0xFF 0x80 0x03 0xFF 0xE0 0x00 0xFF 0xF8 0x00 # 155hz
: D-3 0xFF 0xFC 0x00 0x0F 0xFF 0xC0 0x01 0xFF 0xF8 0x00 0x1F 0xFF 0x00 0x03 0xFF 0xF0 # 146hz
: C$3 0xFF 0xFE 0x00 0x07 0xFF 0xF0 0x00 0x3F 0xFF 0x80 0x01 0xFF 0xFC 0x00 0x0F 0xFF # 138hz
: C-3 0xFF 0xFF 0x00 0x01 0xFF 0xFE 0x00 0x03 0xFF 0xF8 0x00 0x07 0xFF 0xF0 0x00 0x0F # 130hz    0x02
# noise & assorted
: --- 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 # silence  0x00
: sfx-crash  0xAA 0x45 0x97 0xB5 0xBA 0x55 0xD6 0x57 0xE0 0xF0 0x7F 0xC0 0x1C 0x07 0x1C 0x01
: sfx-vuvu   0xCC 0x33 0x4C 0xF3 0x0C 0xD3 0x2C 0xC3 0x34 0xCB 0x30 0xCF 0x32 0xCC 0x33 0xCC


